package com.tanhua.sso.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

/*　告诉MP怎么进行填充时间　（自动填充规则）　*/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    /*　当我们执行insert语句的时候就会执行　*/
    @Override
    public void insertFill(MetaObject metaObject) {
        // User user = new User();
        // user.setPhone("13412341234");

        // user.setCreated(new Date());
        // user.setUpdated(new Date());

        // userMapper.insert(user);

        // metaObject : 元数据对象 其实就是我们传递给MP的插入对象
        Object created = getFieldValByName("created", metaObject);
        // 说明我们要插入的那个数据没有设置 created 属性值
        if (null == created) {
            //字段为空，可以进行填充
            setFieldValByName("created", new Date(), metaObject);
        }
        // 如果我们自己设置了created的属性值  就按照我们自己设置的 值去插入

        Object updated = getFieldValByName("updated", metaObject);
        if (null == updated) {
            //字段为空，可以进行填充
            setFieldValByName("updated", new Date(), metaObject);
        }
    }

    /* 当我们执行update语句的时候就会执行 */
    @Override
    public void updateFill(MetaObject metaObject) {
        // 甭管我们外面是否设置了updated属性值 这边都会更新属性值 更新成当前时间
        // 更新数据时，直接更新字段
        setFieldValByName("updated", new Date(), metaObject);
    }
}
